package com.xq.apis;

import com.xq.dto.DmsDevice.*;
import com.xq.query.DmsDeviceTypeListQuery;
import com.xq.vo.JsonVO;

import java.util.List;

/**
 *  设备管理接口
 * @version 0.1.0
 * @author wuven
 * @since 0.1.0
 * @date 2025/6/26 15:19
 **/
public interface DmsDeviceApis {

    /**
     * 插入设备种类
     * <p>与下面的插入设备不同，设备管理的逻辑是先有设备种类，然后依据设备种类来插入设备</p>
     * @param dmsDeviceTypeInsertDTO
     * @return
     */
    JsonVO<String> insertDeviceType(DmsDeviceTypeInsertDTO dmsDeviceTypeInsertDTO);

    /**
     * 删除设备种类
     * @param dmsDeviceTypeDeleteDTO
     * @return
     */
    JsonVO<String> deleteDeviceType(DmsDeviceTypeDeleteDTO dmsDeviceTypeDeleteDTO);

    /**
     * 更新设备种类
     * @param dmsDeviceTypeUpdateDTO
     * @return
     */
    JsonVO<String> updateDeviceType(DmsDeviceTypeUpdateDTO dmsDeviceTypeUpdateDTO);

    /**
     * 列出设备种类
     * @param dmsDeviceTypeListQuery
     * @return
     */
    JsonVO<List<DmsDeviceTypeListDTO>> listDeviceTypes(DmsDeviceTypeListQuery dmsDeviceTypeListQuery);

    /**
     * 添加设备
     * @param dmsDeviceInsertDTO
     * @return
     */
    JsonVO<String> insertDevice(DmsDeviceInsertDTO dmsDeviceInsertDTO);

    /**
     * 删除设备
     * @param deviceId
     * @return
     */
    JsonVO<String> deleteDevice(String deviceId);

    /**
     * 更新设备
     * @param dmsDeviceUpdateDTO
     * @return
     */
    JsonVO<String> updateDevice(DmsDeviceUpdateDTO dmsDeviceUpdateDTO);

    /**
     * 查找设备
     * @param dmsDeviceListDTO
     * @return
     */
    JsonVO<String> listDevice(DmsDeviceListDTO dmsDeviceListDTO);

    /**
     * 添加设备操作
     * @param dmsDeviceOperationInsertDTO
     * @return
     */
    JsonVO<String> insertDeviceOperation(DmsDeviceOperationInsertDTO dmsDeviceOperationInsertDTO);

    /**
     * 删除设备操作
     * @param deviceId
     * @return
     */
    JsonVO<String> deleteDeviceOperation(String deviceId);

    /**
     * 更新设备操作
     * @param dmsDeviceOperationUpdateDTO
     * @return
     */
    JsonVO<String> updateDeviceOperation(DmsDeviceOperationUpdateDTO dmsDeviceOperationUpdateDTO);

    /**
     * 查找设备操作信息
     * <p>指的是一个设备可以完成的操作</p>
     * @param dmsDeviceOperationListDTO
     * @return
     */
    JsonVO<String> listDeviceOperation(DmsDeviceOperationListDTO dmsDeviceOperationListDTO);

    /**
     * 发送操作请求
     * <p>依据设备的操作信息发送对应的请求</p>
     * @param operationId
     * @return
     */
    JsonVO<String> postDeviceOperation(String operationId);

    /**
     * 设置设备分组信息和负责人
     * @param dmsDeviceManageDTO
     * @return
     */
    JsonVO<String> setDeviceOwnerAndOrganization(DmsDeviceManageDTO dmsDeviceManageDTO);

}
